/***********************************************************************************
 * 文件名： touch_key.h
 * 版本： 3
 * 说明：
 * 		触摸键控制组件，提供环境自适应、超时重置、电压波动补偿等功能，提供一个稳定可靠的触摸
 * 	键是否按下的状态。建议配合 btn_ctrl 组件进行使用，在配合使用时，本组间提供按钮是否按下的
 * 	状态供查询。
 *      在配置文件中进行配置，针对POLSYS_LITE，需要间隔10~40ms调用 TouchKey_Scan 。使用示
 * 	例请见 POLSYS 项目中的 projects\touch_key_demo .
 * 修改记录：
 * 	2021/08/20: 初版。 刘言。
 *  2021/10/15: 增加 TouchKey_SetScanStatus API；增加 _TOUCH_KEY_VOLTAGE_SENSITIVITY 配置项。
 *  2022/02/10：增加 动态灵敏度以及诸多配置项；增加 _TouchKey_PauseCondition API
 *  2022/06/06: 去掉发送捕获值功能；新增 _TOUCH_KEY_USE_SET_STATUS；占用优化。刘言。
***********************************************************************************/
#ifndef _TOUCHKEY_H_
#define _TOUCHKEY_H_

#include "stddef.h"
#ifdef __NO_INCLUDE_PATH
#include "..\..\..\projects\prj\bsp\touch_key_config.h"
#else
#include "touch_key_config.h"
#endif
#include "..\..\polsys.h"

#if (_TOUCH_KEY_CH_NUM == 1)
extern bit TouchKey_mKeyStatus;
// 获取触摸键是否被按下状态
#define TouchKey_IsPress(u8_ch) TouchKey_mKeyStatus
#else
extern xdata bool TouchKey_mKeyStatus[_TOUCH_KEY_CH_NUM];
// 获取触摸键是否被按下状态
#define TouchKey_IsPress(u8_ch) TouchKey_mKeyStatus[u8_ch]
#endif

// 参数含义：0表示不初始化基准值 其他：初始化基准值
void TouchKey_Init(bool reset);

// 扫描所有通道的触摸键，更新其是否按下状态，建议间隔10~40ms调用一次
// 如果使用全功能POLSYS，将按照配置文件的扫描间隔自动进行调用。如有需要，可能在MCU休眠定时唤醒时需要再次手动调用。
void TouchKey_Scan();

#ifdef _TOUCH_KEY_USE_SET_STATUS
// 设置扫描状态
// true: 正常扫描；false: 停止扫描，调用 TouchKey_Scan 将没有任何效果。
FORCE_IN_LINE void TouchKey_SetScanStatus(bool new_status);
#endif




#endif


